package douyin

import (
	"GoServer/utils/config"
	"GoServer/utils/debug"
	"GoServer/utils/tool"
	"fmt"
	"strings"

	"github.com/goccy/go-json"
)

type PaginationRequest struct {
	RoomId   string `json:"roomid"`
	AppId    string `json:"appid"`
	MsgType  string `json:"msg_type"`
	PageNum  string `json:"page_num"`
	PageSize string `json:"page_size"`
}

type PaginationResponse struct {
	ErrNo  int            `json:"err_no"`
	ErrMsg string         `json:"err_msg"`
	LogId  string         `json:"logid"` ///	请求链路的id, 用于出问题时提供给开平具体定位
	Data   PaginationData `json:"data"`
}

type PaginationData struct {
	PageNum    int                  `json:"page_num"`    /// 数据对应的页码
	TotalCount int                  `json:"total_count"` /// 总数居条数
	DataList   []PaginationDataList `json:"data_list"`   /// 当前数据的列表
}

type PaginationDataList struct {
	RoomId  string   `json:"roomid"`   /// 消息房间id
	MsgType string   `json:"msg_type"` /// 消息的类型 对应 MgsType
	Payload []string `json:"payload"`  ///	对应的消息结构体	需要Unmarshal
}

/**
*
 */
func PaginationQuery(roomId string, msgType string, pageNum, pageSize int, gameName string) {

	params := [5]string{
		"roomid=" + roomId,
		"appid=" + config.GetConfig("app").GetString("douyin.appid"),
		"msg_type=" + msgType,
		"page_num=" + string(pageNum),
		"page_size=" + string(pageSize),
	}
	pathUrl := fmt.Sprintf("%s?%s", config.GetConfig("app").GetString("douyin.queryHistoryGift"), strings.Join(params[:], "&"))

	headers := map[string]string{
		"content-type": "application/json; charset=UTF-8",
		"access-token": GetDYAccessToken(gameName),
	}

	res, err := tool.SendGetRetry(pathUrl, "", headers)
	if err != nil {
		debug.Logln(debug.Error, "分页查询推送历史数据失败：", err)

		return
	}

	msg := PaginationResponse{}
	if err := json.Unmarshal(res, &msg); err != nil {
		debug.Logln(debug.Error, err)
	}
	if msg.ErrNo != 0 {
		// 监听事件失败， 返回给客户端
		// 监听事件失败， 返回给客户端
		// 40023	缺少必要的请求参数
		// 40022	无效的AccessToken
		// 100011	请求的分页查询参数不合法
		return
	} else {
		// 开启直播间任务成功
		debug.Logf(debug.Info, "[roomid : %s][查询历史直播互动数据成功] : %s", roomId, msg)
	}
}
